package orchestration.conditions;

import java.util.Collection;

import orchestration.businessprocess.execution.Property;
import orchestration.conditions.exceptions.CheckingConditionException;

/**
 * An interface to implement if you want to define new evaluators
 * for conditions 
 * @author <a href="mailto:car.ferrarini@gmail.com">Carlo Ferrarini</a>
 *
 */
public interface IConditionEvaluator {
	/**
	 * Evaluates an condition using the given properties
	 * @param expression the condition to evaluate
	 * @param properties the properties to be used to evaluate the expression
	 * @return the boolean value of the evaluated expression
	 * @throws CheckingConditionException
	 */
	public boolean check(String expression, Collection<Property> properties) throws CheckingConditionException ;
}
